package proyecto.gestionarDatosDeRequisitosDeConocimientosPrevios;

import java.util.ArrayList;
import java.util.List;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import proyecto.BusinessLogic.RequisitoConocimientosBLRemote;
import proyecto.EntityBeans.RequisitoConocimientos;
import proyecto.gestionarDatosDeCursos.AltaCursoForm;
import util.Common;

public class SeleccionarRequisitosConocimientosPreviosAction extends Action {


	protected ActionForm construirListaRequisitosConocimientosPreviosForm(ActionForm form)
		throws Exception {

		//ListaRequisitosConocimientosPreviosForm listaRequisitosForm = null;
		AltaCursoForm altaCursoForm = (AltaCursoForm) form;
		RequisitoConocimientosPreviosForm requisitoForm = null;
		List listaRequisitos = null;
		ArrayList lista = new ArrayList();
						
		RequisitoConocimientosBLRemote requisitoConocimientosBLRemote = null;
		final Context context;
		
		//Integer idRequisitosConocimientos = Integer.valueOf(idCurso);
		//System.out.println("idrequisitoconocimientos " + idRequisitosConocimientos);
		
		try {	
			context = new InitialContext();					
			requisitoConocimientosBLRemote = (RequisitoConocimientosBLRemote) context.lookup("RequisitoConocimientosBL/remote");
		}
		catch (NamingException e)				{
			e.printStackTrace();
			throw new RuntimeException(e);				
		}
		
		//buscar todos los requisitos de conocimientos previos existenteslistaRequisitos
		System.out.println("cantidad de requisitos encontrados " + requisitoConocimientosBLRemote.findAll());
		listaRequisitos = requisitoConocimientosBLRemote.findAll();
		System.out.println("cantidad de requisitos: " + listaRequisitos.size());
			
		//construir el form
						
		for (int index=0;index < listaRequisitos.size();index++){
			requisitoForm = new RequisitoConocimientosPreviosForm();
			System.out.println("id " + ((RequisitoConocimientos)listaRequisitos.get(index)).getIdRequisitosConocimientos());
			requisitoForm.setIdRequisitosConocimientos(((RequisitoConocimientos)listaRequisitos.get(index)).getIdRequisitosConocimientos());
			requisitoForm.setNombre(((RequisitoConocimientos)listaRequisitos.get(index)).getNombre());
			requisitoForm.setDescripcion(((RequisitoConocimientos)listaRequisitos.get(index)).getDescripcion());
			requisitoForm.setFechaAlta(String.valueOf(((RequisitoConocimientos)listaRequisitos.get(index)).getFechaAlta()));
			requisitoForm.setSeleccion(false);
			lista.add(requisitoForm);
		}
		
		altaCursoForm.setRequisitos(lista);
		
		
		return altaCursoForm;
	}
	
	public ActionForward execute(
			ActionMapping mapping,
			ActionForm form,			
			HttpServletRequest request,
			HttpServletResponse response) {
		
		RequisitoConocimientosBLRemote requisitoConocimientosBLRemote = null;
		final Context context;
					
		try
		{							
			context = new InitialContext();					
			requisitoConocimientosBLRemote = (RequisitoConocimientosBLRemote) context.lookup("RequisitoConocimientosBL/remote");
		} catch (NamingException e)				{
			e.printStackTrace();
			throw new RuntimeException(e);				
		}	
		
		/*if (isCancelled(request)){	
			System.out.println("presione cancelar");
			return mapping.findForward(Common.FAILURE);
		}
		else{*/
		
			try {
				form = this.construirListaRequisitosConocimientosPreviosForm(form);
				
				if ("request".equals(mapping.getScope())) {				
					request.setAttribute(mapping.getAttribute(), form);
				}
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
			
					
			return mapping.findForward(Common.SHOWLIST);
		/*}*/
	}
}
